The present invention is related to detecting click fraud, and more specifically to cursor path vector analysis for detecting click fraud.
Pay Per Click (PPC) is a market tool of the Internet and drives businesses such as Google and Yahoo. In the PPC model, an Advertiser creates clickable advertisements which a Publisher (typically an unaffiliated web site) displays on their website. The Advertiser pays the Publisher for each “click through” which a visitor to the Publisher's site generates, in essence paying for each referral. A PPC system is often extended to include Advertising Networks (e.g., Google) that coordinate the distribution of these advertisements, the charges to the Advertisers and the payments to Publishers, acting essentially as middlemen and making a profit based on the difference between what they pay the Publishers versus what they charge the Advertisers.
Click Fraud (CF) occurs when a person or organization repeatedly generates clicks to a PPC advertisement with the intent of generating an improper charge to the Advertiser. There are several parties who may have an economic motivation to commit Click Fraud.
Click Fraud is clearly unethical and is illegal in several jurisdictions. Click Fraud may be accomplished via automated scripts (clickbots) which run in distributed networks, often using zombie machines (end-user machines compromised by viruses) to simulate clicks from legitimate users. Estimates are that fraudulent clicks represent 2-20% of all clicks.
Automation tools motivate clicks on a given point on a page (which could be a button, menu entry, etc.) using instructions that position the mouse pointer at a given location, establish the identity of a control on screen (e.g., a button) and motivate a click action. Across automation tools the scripting for this action can be generalized as the following flow and sequence of instructions:
Handle hControl=FindWindowControl (Control, “label”); // REM gen- erates a handle to a control on screen which can be a button, URI, etc.WindowPos=GetWindowPosition (hControl); // REM returns the X and Y co-ordinates of the Window Control on screenMoveMouse (WindowPos); // REM positions the mouse at the position on screen where the control/URI livesMouseClick (WindowPos); // REM clicks on the position on screen where the control residesA more intelligent automation script that attempts to force a mouse to traverse a set of vectors to click on a button or Uniform Resource Locator (URI) might have the following sequence:
Handle hControl=FindWindowControl (Control, “label”) ; // REM gen- erates a handle to a control on screen which can be a button, URI, etc.WindowPos=GetWindowPosition (hControl) ; // REM returns the X and Y co-ordinates of the Window Control on screenMoveMouse (VectorArray(array), WindowPos) ; // REM moves the mouse to the position on screen where the control /URI lives forcing the mouse to traverse a set of vectorsMouseClick (WindowPos) ; // REM clicks on the position on screen where the control resides